<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

</body>
<script>
    // * 旧的: 必须在启动异步任务前指定回调函数
    // {
    //     function fn(cb){
	// 		setTimeout(()=>{
	// 			let num = 100;
    //             cb(num);// cb(100)
    //         })
    //     }
	// 	fn(function(num){
	// 		console.log(num);
    //     })
    // }

    // * promise: 启动异步任务 => 返回`promie`对象 => 给promise对象绑定回调函数
    //  (甚至可以在异步任务结束后指定/多个)
	{
		function fn(){
			return new Promise(resolve=>{
				setTimeout(()=>{
					resolve(100)
                })
            })
        }
		// 1- 可以在异步任务前指定回调函数
        // fn().then(value=>{
		// 	console.log(value);
        // })

		// 2- 可以在异步任务后指定回调函数
        // const p = fn();
        // setTimeout(()=>{
		// 	p.then(value=>{
		// 		console.log(value)
        //     })
        // },2000)
		// 3- 可以指定多个回调函数
        const p = fn();
		p.then(value=>{
			console.log(value);
        })
		p.then(value=>{
			console.log(value);
		})
		p.then(value=>{
			console.log(value);
		})
		p.then(value=>{
			console.log(value);
		})
		p.then(value=>{
			console.log(value);
		})
		p.then(value=>{
			console.log(value);
		})
    }
</script>
</html>